@import url("https://fonts.googleapis.com/css?family=PT+Sans:400,700,400italic,700italic|PT+Serif:400,700,400italic,700italic|Open+Sans:400italic,700italic,400,600,300,700");

html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td,
article, aside, canvas, details, embed,
figure, figcaption, footer, header, hgroup,
menu, nav, output, ruby, section, summary,
time, mark, audio, video {
    margin: 0;
    padding: 0;
    border: 0;
    font-size: 100%;
    font: inherit;
    vertical-align: baseline;
}

/* HTML5 display-role reset for older browsers */
article, aside, details, figcaption, figure,
footer, header, hgroup, menu, nav, section {
    display: block;
}
body {
    line-height: 1;
}
ol, ul {
    list-style: none;
}
blockquote, q {
    quotes: none;
}
blockquote:before, blockquote:after,
q:before, q:after {
    content: '';
    content: none;
}

table {
    border-collapse: collapse;
    border-spacing: 0;
}

body {
    font-family: 'PT Sans', sans-serif;
}

/*
    Now let's bring some text styles back ...
*/
b, strong { font-weight: bold }
i, em { font-style: italic }
    
small{
    font-size: smaller;
    color: #666;
}

/*
    Now let's style the presentation steps.

    We start with basics to make sure it displays correctly in everywhere ...
*/

.step {
    width: 900px;
    padding: 40px;
    margin: 20px auto;
    
    font-family: 'PT Serif', georgia, serif;
    font-size: 48px;
    line-height: 1.5;
}

.slide {
    display: block;

    width: 900px;
    padding: 40px 60px;

    background-color: white;
    border: 1px solid rgba(0, 0, 0, .3);
    border-radius: 0 70px;

    color: #231F20;

    font-family: 'Open Sans', Arial, sans-serif;
    font-size: 30px;
    line-height: 36px;
    letter-spacing: -1px;
}

.slide q {
    display: block;
    font-size: 50px;
    line-height: 72px;

    margin-top: 100px;
}

.slide q strong {
    white-space: nowrap;
}
/* slides */

.slide .slide-number{
    display: block;
    position: absolute;
    bottom: 10px;
    right: 20px;
    font-size: 0.8em;
}

.no-number .slide-number{
    display: none;
}

.slide .title{
    overflow: hidden;
    height: 59px;
    border-radius: 0 20px 20px 0;
    margin: 0 0 40px -20px;
}

.slide .title .label{
    background-color: #CCFF00;
    border: 1px solid #CCFF00;
    min-width: 240px;
    height: 47px;
    font-size: 1.2em;
    line-height: 1.3em;
    float: left;
    padding: 7px 60px 3px 20px;
    border-radius: 20px 0 0 20px;
}

.slide .title:after{
    content:" ";
    float: left;
    display: inline-block;
    width: 0;
    height: 0;
    border-top: 31px solid transparent;
    border-left: 30px solid #CCFF00;
    border-bottom: 28px solid #CCFF00;
    border-right: 28px solid transparent;
}

.slide h1,
.slide h2,
.slide h3,
.slide h4,
.slide h5,
.slide h6{
    font-weight: bold;
    margin-top: 1em;
}

.slide p,
.slide ul,
.slide ol{
    line-height: 1.5em;
}

.slide p,
.slide ul,
.slide ol,
.slide li{
    margin-bottom: 0.5em;
}

.slide li:first-child{
    margin-top: 0.5em;
}

.slide ul,
.slide ol{
    padding-left: 40px;
}

.slide ol {
    list-style: decimal;
}

.slide ul {
    list-style: disc;
}

blockquote dt{
    font-weight: bold;
    margin-bottom: 0.5em;
}

blockquote dl,
blockquote dt,
blockquote dd{
    display: inline;
}
blockquote {
    border-left: 0.5em solid #DDD;
    margin: 1.5em 0px .75em 1.5em;
    box-shadow: 0 0 6px rgba(0,0,0,0.5);
    padding: .75em .5em .75em 1em;
    background: #fff;
}
li blockquote {
    margin-left: 0;
}
blockquote p {
    margin: 0;
}
blockquote p+p {
    margin-top: 1.5em;
}
blockquote footer {
    margin-bottom: 0;
}
blockquote blockquote, .callout blockquote, blockquote ol, blockquote ul {
    margin-left: 1.5em;
    margin-right: .75em;
}
blockquote>blockquote {
    margin-top: .75em
}
.note-block blockquote {
    font-style: normal;
}
blockquote mark {
    font-weight: bold;
}
blockquote strong mark, blockquote mark strong {
    font-style: italic;
}
/* Quotes for two levels of nested quotations */
q {
    quotes: '“' '”' '‘' '’';
}
/* extra content definitions for pre-2011 WebKit */
q:before {
    content: '“';
    content: open-quote;
}
q:after {
    content: '”';
    content: close-quote;
}
q q:before {
    content: '‘';
    content: open-quote;
}
q q:after {
    content: '’';
    content: close-quote;
}
/* q in blockquote */
blockquote q:before {
    content: '‘';
    content: open-quote;
}
blockquote q:after {
    content: '’';
    content: close-quote;
}
blockquote q q:before {
    content: '“';
    content: open-quote;
}
blockquote q q:after {
    content: '”';
    content: close-quote;
}
/* hanging opening quote */
blockquote:before {
    display: block;
    height: 0;
    content: "“";
    margin-left: -.95em; font: italic 400%/1 Cochin,Georgia,"Times New Roman", serif;
    color: #999;
}

blockquote footer,
.footer{
    font-size: 0.9em;
    text-align: right;
    margin-top: 0.5em;
}

pre.prettyprint.code{
    border: 1px solid #888;
    border-radius: 10px;
    padding: 5px;
    background-color: #eee;
    font-size: 26px;
    line-height: 1.4em;
    margin: 10px 0 20px;
    word-wrap: break-word;
}

.example-label{
    font-weight: bold;
}

.footnote-reference{
    vertical-align: super;
    font-size: small;
}

.footnote,
.footnote sup{
    font-size: 22px;
}

.footnote sup{
    padding-right: 5px;
}

code,
kbd{
    font-family: monospace;
    font-size: 28px;
    font-weight: bold;
}

.line-through{
    text-decoration: line-through;
}


.rotate-title{
    margin-top: 150px;
    font-weight: bold;
    text-align: center;
    font-size: 2em;
    line-height: 1;

    /*text-shadow: 0 0 10px #FFFFFF, 0 0 20px #FFFFFF, 0 0 30px #231F20, 0 0 40px #231F20, 0 0 70px #231F20, 0 0 80px #231F20, 0 0 100px #231F20, 0 0 150px #231F20;*/
    text-shadow: 0 0 5px #231F20;
}

.rotate-title .more{
    display: inline-block;
}

#title{
    min-height: 700px;
}

#title .authors{
    position: absolute;
    bottom: 120px;
    text-align: center;
    width: 780px;
}

#title .authors .name{
    font-weight: bold;
}

ul.authors{
    list-style: none;
    padding-left: 0;
}

#title.slide{
    background-color: transparent;
    border: 0px none;
    box-shadow: 0 0 0 transparent;
    position: relative;
}

#global{
    background-color: transparent;
    box-shadow: 0 0 0 transparent;
}

.lang-css, .lang-html, .lang-js{}



/* tables */
#tablesexample table{
    font-family: "Lucida Sans Unicode", "Lucida Grande", Sans-Serif;
    font-size: 24px;
    width: 100%;
    text-align: left;
    border-collapse: collapse;
}
#tablesexample table thead th:first-child{
    background: #b9c9fe;
    border-radius: 10px 0 0;
}
#tablesexample table thead th:last-child{
    background: #b9c9fe;
    border-radius: 0 10px 0 0;
}
#tablesexample caption{
    caption-side: bottom;
    background-color: #e8edff;
    border-radius: 0 0 10px 10px;
    border-top: 1px solid #fff;
    padding: 10px;
    font-size: 20px;
}
#tablesexample table thead th{
    padding: 8px;
    font-weight: normal;
    font-size: 24px;
    color: #039;
    background: #b9c9fe;
    text-align: center;
}
#tablesexample table tbody td,
#tablesexample table tbody th{
    padding: 8px;
    background: #e8edff;
    border-top: 1px solid #fff;
    color: #669;
    text-align: center;
}
#tablesexample table tbody tr:hover td,
#tablesexample table tbody tr:hover th{
    background: #d0dafd;
}

#tablesexample td[scope],
#tablesexample th[scope]{
    font-weight:bold;
}



#tablesexamplecode .code{
    font-size: 16px;
}

@media screen{/*
    So you like the style of impress.js demo?
    Or maybe you are just curious how it was done?

    You couldn't find a better place to find out!

    Welcome to the stylesheet impress.js demo presentation.

    Please remember that it is not meant to be a part of impress.js and is
    not required by impress.js.
    I expect that anyone creating a presentation for impress.js would create
    their own set of styles.

    But feel free to read through it and learn how to get the most of what
    impress.js provides.

    And let me be your guide.

    Shall we begin?
    */

    /*
        Now here is when interesting things start to appear.
    
        We set up <body> styles with default font and nice gradient in the background.
        And yes, there is a lot of repetition there because of -prefixes but we don't
        want to leave anybody behind.
    */
    body {
        min-height: 740px;

        background: rgb(215, 215, 215);
        background: -webkit-gradient(radial, 50% 50%, 0, 50% 50%, 500, from(rgb(240, 240, 240)), to(rgb(190, 190, 190)));
        background: -webkit-radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190));
        background:    -moz-radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190));
        background:     -ms-radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190));
        background:      -o-radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190));
        background:         radial-gradient(rgb(240, 240, 240), rgb(190, 190, 190));
    }

    /*
        ... and give links a nice look.
    */
    a {
        color: inherit;
        text-decoration: none;
        padding: 0 0.1em;
        background: rgba(255,255,255,0.5);
        text-shadow: -1px -1px 2px rgba(100,100,100,0.9);
        border-radius: 0.2em;

        -webkit-transition: 0.5s;
        -moz-transition:    0.5s;
        -ms-transition:     0.5s;
        -o-transition:      0.5s;
        transition:         0.5s;
    }

    a:hover,
    a:focus {
        background: rgba(255,255,255,1);
        text-shadow: -1px -1px 2px rgba(100,100,100,0.5);
    }

    /*
        Because the main point behind the impress.js demo is to demo impress.js
        we display a fallback message for users with browsers that don't support
        all the features required by it.
    
        All of the content will be still fully accessible for them, but I want
        them to know that they are missing something - that's what the demo is
        about, isn't it?
    
        And then we hide the message, when support is detected in the browser.
    */

    .fallback-message {
        font-family: sans-serif;
        line-height: 1.3;

        width: 780px;
        padding: 10px 10px 0;
        margin: 20px auto;

        border: 1px solid #E4C652;
        border-radius: 10px;
        background: #EEDC94;
    }

    .fallback-message p {
        margin-bottom: 10px;
    }

    .impress-supported .fallback-message {
        display: none;
    }

    /*
        Now let's style the presentation steps.
    
        We start with basics to make sure it displays correctly in everywhere ...
    */

    .step {
        position: relative;
        width: 900px;
        padding: 40px;
        margin: 20px auto;

        -webkit-box-sizing: border-box;
        -moz-box-sizing:    border-box;
        -ms-box-sizing:     border-box;
        -o-box-sizing:      border-box;
        box-sizing:         border-box;
    }

    /*
        ... and we enhance the styles for impress.js.
    
        Basically we remove the margin and make inactive steps a little bit transparent.
    */
    .impress-enabled .step {
        margin: 0;
        
        opacity: 0.3;

        -webkit-transition: opacity 1s;
        -moz-transition:    opacity 1s;
        -ms-transition:     opacity 1s;
        -o-transition:      opacity 1s;
        transition:         opacity 1s;
        
    }

    .impress-enabled .step.active { 
        opacity: 1 !important;
        filter: none;
        /*z-index: 1;*/
    }

    /*
        These 'slide' step styles were heavily inspired by HTML5 Slides:
        http://html5slides.googlecode.com/svn/trunk/styles.css
    
        ;)
    
        They cover everything what you see on first three steps of the demo.
    */
    .slide {
        height: 700px;
        overflow: hidden;
        text-shadow: 0 2px 2px rgba(0, 0, 0, .1);
        box-shadow: 0 2px 6px rgba(0, 0, 0, .1);
    }

    /*
        And now we start to style each step separately.
    
        I agree that this may be not the most efficient, object-oriented and
        scalable way of styling, but most of steps have quite a custom look
        and typography tricks here and there, so they had to be styled separately.
    
        First is the title step with a big <h1> (no room for padding) and some
        3D positioning along Z axis.
    */



    
    #change-effects{
        position: fixed;
        top: 0;
        right: 0;
        opacity: 0;
        -webkit-transition: opacity 1s;
        -moz-transition:    opacity 1s;
        -ms-transition:     opacity 1s;
        -o-transition:      opacity 1s;
        transition:         opacity 1s;
    }

    .impress-supported.impress-on-title.impress-effects-enabled #change-effects,
    .impress-supported.impress-effects-disabled #change-effects{
        pointer-events: auto;
        opacity: 1;
    }
    
    
    /* Title frame */
    
    @-webkit-keyframes rotate-title {
        0%   { 
            -webkit-transform: perspective(1000px) rotateY(-10deg);
        }
        100% { 
            -webkit-transform: perspective(1000px) rotateY(10deg); 
        }
    }

    @-moz-keyframes rotate-title {
        0%   { 
            -moz-transform: perspective(1000px) rotateY(-10deg);
        }
        100% { 
            -moz-transform: perspective(1000px) rotateY(10deg); 
        }
    }

    @-o-keyframes rotate-title {
        0%   { 
            -o-transform: perspective(1000px) rotateY(-10deg);
        }
        100% { 
            -o-transform: perspective(1000px) rotateY(10deg); 
        }
    }
    
    @keyframes rotate-title {
        0% {
            transform: perspective(1000px) rotateY(-10deg);
        }
        100% {
            transform: perspective(1000px) rotateY(10deg); 
        }
    }

    .rotate-title{
        -webkit-transform-style: preserve-3d;
        -moz-transform-style: preserve-3d;
        transform-style: preserve-3d;
        
        -webkit-transform: perspective(1000px) rotateY(0deg);
        -moz-transform: perspective(1000px) rotateY(0deg);
        -ms-transform: perspective(1000px) rotateY(0deg);
        -o-transform: perspective(1000px) rotateY(0deg);
        transform: perspective(1000px) rotateY(0deg);
        
        -webkit-transition: all 2s ease-in-out;
        -moz-transition: all 2s ease-in-out;
        -o-transition: all 2s ease-in-out;
        transition: all 2s ease-in-out;
    }

    .rotate-title .more{
        -webkit-transform: translateZ(40px);
        -moz-transform: translateZ(40px);
        -ms-transform: translateZ(40px);
        -o-transform: translateZ(40px);
        transform: translateZ(40px);
    }

    .present .rotate-title,
    .past .rotate-title,
    .future .rotate-title{
        -webkit-animation: rotate-title 2s infinite alternate ease-in-out;
        -moz-animation: rotate-title 2s infinite alternate ease-in-out;
        -o-animation: rotate-title 2s infinite alternate ease-in-out;
        animation: rotate-title 2s infinite alternate ease-in-out;
    }

    /*
        Now, when we have all the steps styled let's give users a hint how to navigate
        around the presentation.

        The best way to do this would be to use JavaScript, show a delayed hint for a
        first time users, then hide it and store a status in cookie or localStorage...

        But I wanted to have some CSS fun and avoid additional scripting...

        Let me explain it first, so maybe the transition magic will be more readable
        when you read the code.

        First of all I wanted the hint to appear only when user is idle for a while.
        You can't detect the 'idle' state in CSS, but I delayed a appearing of the
        hint by 5s using transition-delay.

        You also can't detect in CSS if the user is a first-time visitor, so I had to
        make an assumption that I'll only show the hint on the first step. And when
        the step is changed hide the hint, because I can assume that user already
        knows how to navigate.

        To summarize it - hint is shown when the user is on the first step for longer
        than 5 seconds.

        The other problem I had was caused by the fact that I wanted the hint to fade
        in and out. It can be easily achieved by transitioning the opacity property.
        But that also meant that the hint was always on the screen, even if totally
        transparent. It covered part of the screen and you couldn't correctly clicked
        through it.
        Unfortunately you cannot transition between display `block` and `none` in pure
        CSS, so I needed a way to not only fade out the hint but also move it out of
        the screen.

        I solved this problem by positioning the hint below the bottom of the screen
        with CSS transform and moving it up to show it. But I also didn't want this move
        to be visible. I wanted the hint only to fade in and out visually, so I delayed
        the fade in transition, so it starts when the hint is already in its correct
        position on the screen.

        I know, it sounds complicated ... maybe it would be easier with the code?
    */

    .hint {
        /*
            We hide the hint until presentation is started and from browsers not supporting
            impress.js, as they will have a linear scrollable view ...
        */
        display: none;

        /*
            ... and give it some fixed position and nice styles.
        */
        position: fixed;
        left: 0;
        right: 0;
        bottom: 20px;

        background: rgba(0,0,0,0.5);
        color: #EEE;
        text-align: center;

        font-size: 40px;
        padding: 20px;

        z-index: 100;

        /*
            By default we don't want the hint to be visible, so we make it transparent ...
        */
        opacity: 0;

        /*
            ... and position it below the bottom of the screen (relative to it's fixed position)
        */
        -webkit-transform: translateY(400px);
        -moz-transform:    translateY(400px);
        -ms-transform:     translateY(400px);
        -o-transform:      translateY(400px);
        transform:         translateY(400px);

        /*
            Now let's imagine that the hint is visible and we want to fade it out and move out
            of the screen.

            So we define the transition on the opacity property with 1s duration and another
            transition on transform property delayed by 1s so it will happen after the fade out
            on opacity finished.

            This way user will not see the hint moving down.
        */
        -webkit-transition: opacity 1s, -webkit-transform 0.5s 1s;
        -moz-transition:    opacity 1s,    -moz-transform 0.5s 1s;
        -ms-transition:     opacity 1s,     -ms-transform 0.5s 1s;
        -o-transition:      opacity 1s,      -o-transform 0.5s 1s;
        transition:         opacity 1s,         transform 0.5s 1s;
    }

    /*
        Now we 'enable' the hint when presentation is initialized ...
    */
    .impress-enabled .hint { display: block }

    /*
        ... and we will show it when the first step (with id 'bored') is active.
    */
    .impress-on-title .hint {
        /*
            We remove the transparency and position the hint in its default fixed
            position.
        */
        opacity: 1;

        -webkit-transform: translateY(0px);
        -moz-transform:    translateY(0px);
        -ms-transform:     translateY(0px);
        -o-transform:      translateY(0px);
        transform:         translateY(0px);

        /*
            Now for fade in transition we have the oposite situation from the one
            above.

            First after 4.5s delay we animate the transform property to move the hint
            into its correct position and after that we fade it in with opacity
            transition.
        */
        -webkit-transition: opacity 1s 5s, -webkit-transform 0.5s 4.5s;
        -moz-transition:    opacity 1s 5s,    -moz-transform 0.5s 4.5s;
        -ms-transition:     opacity 1s 5s,     -ms-transform 0.5s 4.5s;
        -o-transition:      opacity 1s 5s,      -o-transform 0.5s 4.5s;
        transition:         opacity 1s 5s,         transform 0.5s 4.5s;
    }

    /*
        And as the last thing there is a workaround for quite strange bug.
        It happens a lot in Chrome. I don't remember if I've seen it in Firefox.

        Sometimes the element positioned in 3D (especially when it's moved back
        along Z axis) is not clickable, because it falls 'behind' the <body>
        element.

        To prevent this, I decided to make <body> non clickable by setting
        pointer-events property to `none` value.
        Value if this property is inherited, so to make everything else clickable
        I bring it back on the #impress element.

        If you want to know more about `pointer-events` here are some docs:
        https://developer.mozilla.org/en/CSS/pointer-events

        There is one very important thing to notice about this workaround - it makes
        everything 'unclickable' except what's in #impress element.

        So use it wisely ... or don't use at all.
    */
    .impress-enabled          { pointer-events: none }
    .impress-enabled #impress { pointer-events: auto }

    /*
        There is one funny thing I just realized.

        Thanks to this workaround above everything except #impress element is invisible
        for click events. That means that the hint element is also not clickable.
        So basically all of this transforms and delayed transitions trickery was probably
        not needed at all...

        But it was fun to learn about it, wasn't it?
    */

    /*
        That's all I have for you in this file.
        Thanks for reading. I hope you enjoyed it at least as much as I enjoyed writing it
        for you.
    */

    .screen-reader-text {
        position: absolute;
        left: -9000px;
        color: transparent;
    }
    
    .screen-reader-text:focus,
    .screen-reader-text:hover,
    .screen-reader-text:active{
        position: fixed;
        top: 0;
        left: 0;
        display: inline-block;
        color: #000000;
    }
}

@media print{
    .no-print,
    .fallback-message,
    .hint,
    #change-effects,
    .screen-reader-text{
        display: none;
    }
    
    .slide{
        page-break-after: always;
        height: 100%;
    }
    
    a[target="_blank"]:after,
    a[target="_blank"]:link:after, 
    a[target="_blank"]:visited:after { 
        content: " [" attr(href) "] "; 
        font-size: 90%; 
        color: #666;
    } 
    a[href^="mailto"]:after, 
    a[href^="mailto"]:link:after, 
    a[href^="mailto"]:visited:after { 
        content: "";
        display: none;
    }
    
    a,
    a:not([target="_blank"]){
        color: #231F20;
        text-decoration:none;
    }
        
}